foo=c    #

foo?=foo

CFILE=test.c foo.c
OBJ=$(CFILE:.c=)

#x=y
#y=z
#a:=$($(x))
x = variable1
variable2 := Hello
y = $(subst 1,2,$(x))
z = y
a := $($($(z)))

ifdef do_sort
func := sort
else
func := strip
endif

bar := a d b g q c

override foo := $($(func) $(bar))

#override b=1

b=2
b:=3
b+=4

.PHONY:Echo
Echo:
	echo $(b)

.PHONY:prog
prog:CFLAGS=-g
prog:
	echo $(CFLAGS)
